﻿using System.Numerics;
using System.Reflection.Metadata.Ecma335;

namespace Lambda表达式
{
    internal class Program
    {
        // 定义一个委托类型
        delegate int TwoIntegerOperationDelegate(int x,int y);

        static void Main(string[] args)
        {
            // 使用 Lambda 表达式定义一个委托实例
            PerformOperations((a, b) =>
            {
                return a + b;
            });

            Console.WriteLine("Hello, World!");
        }

        /// <summary>
        /// 使用委托类型作为参数
        /// </summary>
        /// <param name="addFunc"></param>
        static void PerformOperations(TwoIntegerOperationDelegate addFunc)
        {
            for(int i = 0;i < 10; i++)
            {
                for(int j = 0;j < 10;j++)
                {
                    int result = addFunc(i,j); // 调用委托实例
                    Console.Write($" i + j = {result}");
                    if(j != 5)
                    {
                        Console.Write(", ");
                    }
                }
                Console.WriteLine();
            }
        }
    }
}
